[Mobile Hacking 5] 안드로이드 엑티비티 취약점, 약한 인증

[Mobile Hacking 5] 안드로이드 엑티비티 취약점, 약한 인증

Lecture
Security
태그
mobile hacking
security
public
완성
Y
생성일
Mar 18, 2024 05:34 AM
LectureName
Mobile Hacking (Android- checklist)

1. 취약한 인증 매커니즘


취약한 인증 매커니즘은 앱에서 발생하는 정상적인 인증 절차를 우회하여 잘못된 인증으로 접근 권한을 취득하는 취약점을 말한다.
 
🎯 일반적인 취약한 인증 매커니즘 목록은 다음과 같다.
  • 적절하지 않은 앱 퍼미션 설정 여부
  • 서비스 권한 상승 행위에 대한 통제 여부
  • 기능에 대한 제한 또는 우회 금지 여부
  • 불필요하거나 사용하지 않는 엑티비티 제거 여부
  • 마스터키 취약점 대응 여부
 
 

2. 실습


로그인 과정을 거치지 않고 어플리케이션 기능을 쓸 수 있는 취약점에 대하여 실습해보도록 한다. 추가적으로 해당 예제는 로그인 인증 우회와 더불어, Activity를 어플리케이션과 다른 pid를 가진 어플리케이션, 혹은 프로그램에 의해 호출될 수 있는 Activity 호출 취약점을 동시에 가지고 있다.
 
개요
AndroidManifest.xml에는 Activity, Service등의 속성이 저장되어 있다. 이때 android:exported="true" 로 설정되어 있는 경우 다른 어플리케이션 혹은 엑티비티에서 접근할 수 있다. 엑티비티의 경우 exported="true" 로 설정되어 있다면 다른 엑티비티에서 인증 없이 접근할 수 있다.
 
코드 예시
notion image
 
취약점 분석
해당 xml 파일을 보면, DoLogin 로직은 로그인을 수행하는 엑티비티 같고, PostLogin은 로그인이 수행된 후 수행될 엑티비티로 보인다. adb를 이용하여 PostLogin을 호출해 보도록 한다.
 
🎯 adb에서 패키지를 호출하는 법은 다음과 같다
adb shell am start [앱이 설치된 주소]/[호출하고 싶은 패키지 주소]
 
🤪 여기서는 PostLogin을 호출해 보겠다.
adb shell am start com.android.insecurebankv2/.PostLogin
로그인 화면
로그인 화면
로그인 우회 화면
로그인 우회 화면
 
이처럼 Activity의 exported 속성이 true로 되어 있다면, 다른 앱 혹은 adb에서 해당 엑티비티를 호출할 수 있다.
 
 
drozer을 이용한 체크
drozer을 이용하면, exported되어있는 activity를 확인하고, 바로 체크할 수 있다.
# exported 되어있는 activity 체크 dz> run app.activity.info -a com.android.insecurebankv2 # 엑티비티 실행 dz> run app.activity.start --component com.android.insecurebankv2 com.android.insecurebankv2.PostLogin
 
 
 

3. 대응방안


3.1 컴포넌트 접근 제어

  • 컴포넌트에 대한 접근은 외부에 허락하지 않는 것이 안전하다.
  • 특별한 경우가 아니라면 android:exported 속성을 false로 설정하고, 만약 반드시 필요하다면 인텐트 필터로 추가적으로 검증한다.